包名 结绳.Windows

/*
可变数组结构，提供不定长度的数组结构支持
示例：
类 整数数组 : 可变数组<整数>
结束 类

变量 数组1 : 整数数组
数组1.添加成员(123)
数组1.取成员(0)
*/
@引入头文件("<vector>")
@指代类("std::vector")
类 数组模板类<模板类型1>
	
	属性读 长度() : 整数
		code return #this.count();
	结束 属性
	
	//向数组中添加成员
	方法 添加成员(值 为 模板类型1)
		code #this.push_back(#值);
	结束 方法
	
	//取指定索引出的成员
	方法 取成员(索引 为 整数) : 模板类型1
		code return #this[#索引];
	结束 方法
结束 类

/*
集合数据结构，提供存储对象支持
示例：
类 整数集合 : 集合<整数>
结束 类

变量 集合1 : 整数集合
集合1.添加成员(123)
集合1.取成员(0)
*/
@引入头文件("<list>")
@指代类("std::list")
类 集合模板类<模板类型1>
	
	属性读 长度() : 整数
		code return #this.count();
	结束 属性
	
	@运算符重载
	方法 =(数据 : 模板类型1[])
		@code
		
		@end
	结束 方法

	//取指定索引处的值
	方法 取成员(索引 : 整数) : 模板类型1
	    @code
		if (#索引 < 0) {return NULL;}
	    std::list<#<模板类型1>>::iterator begin = #this.begin();
		std::list<#<模板类型1>>::iterator end = #this.end();
		if (#索引 == 0 && begin == end) {
			return (*begin);
		}
		int i = 0;
		for (std::list<#<模板类型1>>::iterator it = #this.begin(); it != end; it++) {
			if (i == #索引) {
				return (*it);
			}
			i++;
		}
		return NULL;
	    @end
	结束 方法

	//向集合中添加成员
	方法 添加成员(值 为 模板类型1)
		code #this.push_back(#值);
	结束 方法

	//判断集合是否为空
	方法 是否为空() : 逻辑型
		code rturn #this.empty();
	结束 方法
结束 类

/*
哈希表数据结构，提供键值对存储数据支持
示例：
类 文本到文本哈希表 : 哈希表<文本,文本>
结束 类

变量 哈希表1 : 文本到文本哈希表
哈希表1.置入("名字","某某某")
哈希表1.置入("性别","男/女")
控制台输出(哈希表1.取值("名字"))
控制台输出(哈希表1.取值("性别"))
*/
@引入头文件("<unordered_map>")
@指代类("std::unordered_map")
类 哈希表模板类<模板类型1,模板类型2>
	
	//向哈希表中置入内容，参数一为键名，参数2为键所对应的值
	方法 置入(关键字 为 模板类型1, 值 为 模板类型2)
		code #this[#关键字] = #值;
	结束 方法
	
	//通过关键字取出值
	方法 取值(关键字 为 模板类型1) 为 模板类型2
		code return #this[#关键字];
	结束 方法
结束 类